Image data is often stored and transmitted in a compressed format. The compression of image data reduces the amount of memory utilized by storage of the data, and also decreases the amount of time needed to transmit the image data across a communications channel with a limited bandwidth compared to uncompressed data.
Many different types of data compression techniques are known. One type of compression commonly used with image data is subsampling. Each pixel of color image data in an image may be described as a set of three coordinates or components that locate the color of the pixel in a selected color space. Subsampled image data is image data that has at least one color component sampled at a lower spatial frequency than the other color components.
One type of subsampling used in some color spaces is referred to as “4:2:2” subsampling. This type of subsampling is typically used in color spaces that describe an image in the terms of a luminance (or brightness) component and two chrominance (or color) components. 4:2:2 subsampling involves sampling the chrominance components at the same spatial frequency as the luminance component along the vertical direction, but at one-half the spatial frequency of the luminance component in the horizontal direction. Another type of subsampling is referred to as “4:2:0” subsampling. This is similar to 4:2:2 subsampling, but involves sampling the chrominance components at one-half the spatial frequency of the luminance component in both the vertical and horizontal directions.
In the decompression of subsampled image data, the subsampled data typically is read into a buffer configured to hold an entire frame of the data, and then the missing chrominance values are calculated from the subsampled chrominance values. In some decompression systems, the data also may be read into a cache memory as it is being read into the buffer. Cache memory is a higher speed memory associated with many processors, and is used to increase processor speed. When the processor needs a value for a calculation, it checks the cache memory first. Where the value is not in the cache memory, the processor must then find the value in the buffer stored in slower general memory. This is known as a “cache miss.” Significant numbers of cache misses may slow down processing speed.
Cache memory typically has a small size relative to general memory. For image data in a high-resolution format such as XGA, a buffer configured to hold an entire frame of data may be larger than the cache. In this case, some image data in the cache memory may be written over by other image data as the data is read into the cache memory and the buffer. This may cause cache misses during the calculation of the missing chrominance values. The generation of too many cache misses may slow down image data processing, and thus may negatively affect the decompression and presentation performance of subsampled video image data, which typically must be decompressed at a rate of approximately 25 frames/second or faster.